package com.sharer.last.controller;

import com.sharer.last.base.constant.CommonConstant;
import com.sharer.last.base.model.PageVO;
import com.sharer.last.base.model.R;
import com.sharer.last.interfaces.ValidateGroup;
import com.sharer.last.model.dto.tag.TagChangeDTO;
import com.sharer.last.model.dto.tag.TagQueryDTO;
import com.sharer.last.model.vo.tag.TagVO;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.sharer.last.annotation.OperationLogger;
import com.sharer.last.service.TagService;

import javax.annotation.Resource;

/**
 * 博客标签后台管理
 *
 * @ClassName TagAdminController
 * @Author wangjin
 * @Date 2023/5/5 21:04
 * @Description
 * @Version 1.0
 */
@RestController
@RequestMapping(CommonConstant.BLOG_ADMIN_API + "/tag")
public class TagAdminController {
    @Resource
    TagService tagService;

    /**
     * 获取博客标签列表
     *
     * @param queryDTO
     * @return
     */
    @PostMapping("/page")
    public R<PageVO<TagVO>> page(@RequestBody TagQueryDTO queryDTO) {
        PageVO<TagVO> list = tagService.selectListByPage(queryDTO);
        return R.success(list);
    }

    /**
     * 添加新标签
     *
     * @param dto 标签实体
     * @return
     */
    @OperationLogger("添加标签")
    @PostMapping("/create")
    public R create(@RequestBody @Validated(ValidateGroup.InsertGroup.class) TagChangeDTO dto) {
        tagService.createTag(dto);
        return R.handle();
    }

    /**
     * 修改标签
     *
     * @param dto 标签实体
     * @return
     */
    @OperationLogger("修改标签")
    @PutMapping("/update")
    public R update(@RequestBody @Validated(ValidateGroup.UpdateGroup.class) TagChangeDTO dto) {
        tagService.updateTag(dto);
        return R.handle();
    }

    /**
     * 按id删除标签
     *
     * @param id 标签id
     * @return
     */
    @OperationLogger("删除标签")
    @DeleteMapping("/delete")
    public R delete(@RequestParam Long id) {
        tagService.deleteTagById(id);
        return R.handle();
    }
}
